//package com.hc.testaudio.delete.ui;
//
//import android.graphics.Color;
//import android.media.AudioFormat;
//import android.media.AudioManager;
//import android.media.AudioRecord;
//import android.media.AudioTrack;
//import android.media.MediaRecorder;
//import android.os.Bundle;
//import android.widget.Button;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.hc.testaudio.R;
//import com.hc.testaudio.delete.util.forurier.Complex;
//
///**
// *
// */
//public class Test extends BaseActivity {
//
//    TextView fft;
//    TextView freq;
//    TextView results;
//    MediaRecorder recorder;
//    AudioRecord tuner;
//    int audioSource = MediaRecorder.AudioSource.MIC;
//    int sampleRateInHz = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_SYSTEM);
//    int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
//    int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
//    int bufferSizeInBytes;
//    int samples;
//    short[] audioBuffer;
//    short[] audioData;
//    double[] temp;
//    String fileName;
//
//    @Override
//    protected int getLayoutId() {
//        return 0;
//    }
//
//    @Override
//    protected void initView(Bundle savedInstanceState) {
////        setContentView(R.layout.main);
//
//        findViewById(R.id.chartStartBtn).setOnClickListener(v -> {
//            onTune(true);
//        });
//        findViewById(R.id.chartEndBtn).setOnClickListener(v -> {
//            onTune(false);
//        });
//        freq = (TextView) findViewById(R.id.textView);
//        bufferSizeInBytes = 4096;
//        //bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
//        results = (TextView) findViewById(R.id.textView2);
//        fft = (TextView) findViewById(R.id.textView3);
//    }
//
//    //------------------------------------------------------------>
//    private void onTune(boolean start) {
//        if (start) {
//            startTuning();
//        } else {
//            Toast.makeText(getApplicationContext(), "Tuning Stopped", Toast.LENGTH_SHORT).show();
//            tuner.stop();
//        }
//    }
//
//    private void startTuning() {
//        tuner = new AudioRecord(audioSource, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes);
//        audioData = new short[bufferSizeInBytes];
//        trigger();
//    }
//
//    public void trigger() {
//        acquire();
//        computeFFT();
//        display();
//    }
//
//    public void acquire() {
//        try {
//            tuner.startRecording();
//            samples = tuner.read(audioData, 0, bufferSizeInBytes);
//        } catch (Throwable t) {
//            t.printStackTrace();
//        }
//    }
//
//    public void computeFFT() {
//        //Conversion from short to double
//        double[] micBufferData = new double[bufferSizeInBytes];//size may need to change
//        final int bytesPerSample = 2; // As it is 16bit PCM
//        final double amplification = 100.0; // choose a number as you like
//        for (int index = 0, floatIndex = 0; index < bufferSizeInBytes - bytesPerSample + 1; index += bytesPerSample, floatIndex++) {
//            double sample = 0;
//            for (int b = 0; b < bytesPerSample; b++) {
//                int v = audioData[index + b];
//                if (b < bytesPerSample - 1 || bytesPerSample == 1) {
//                    v &= 0xFF;
//                }
//                sample += v << (b * 8);
//            }
//            double sample32 = amplification * (sample / 32768.0);
//            micBufferData[floatIndex] = sample32;
//        }
//
//        //Create Complex array for use in FFTHelper
//        Complex[] fftTempArray = new Complex[bufferSizeInBytes];
//        for (int i = 0; i < bufferSizeInBytes; i++) {
//            fftTempArray[i] = new Complex(micBufferData[i], 0);
//        }
//
//        //Obtain array of FFTHelper data
//        final Complex[] fftArray = FFTHelper.fft(fftTempArray);
//        final Complex[] fftInverse = FFTHelper.ifft(fftTempArray);
//
//        //Create an array of magnitude of fftArray
//        double[] magnitude = new double[fftArray.length];
//        for (int i = 0; i < fftArray.length; i++) {
//            magnitude[i] = fftArray[i].abs();
//        }
//
//        fft.setTextColor(Color.GREEN);
//        fft.setText("fftArray is " + fftArray[500] + " and fftTempArray is " + fftTempArray[500] + " and fftInverse is " + fftInverse[500] + " and audioData is " + audioData[500] + " and magnitude is " + magnitude[1] + ", " + magnitude[500] + ", " + magnitude[1000] + " You rock dude!");
//        for (int i = 2; i < samples; i++) {
//            fft.append(" " + magnitude[i] + " Hz");
//        }
//    }
//
//    public void display() {
//        results.setTextColor(Color.BLUE);
//        results.setText(audioData[1] + "");
//        for (int i = 2; i < samples; i++) {
//            results.append(" " + audioData[i]);
//        }
//        results.invalidate();
//        //fft.setTextColor(Color.GREEN);
//        //fft.setText("Buffer size is "+bufferSizeInBytes);
//        //fft.setText(fftArray[1]+" Hz");
//        //for(int i = 2; i < samples; i++){
//        //fft.append(" " + fftArray[i] + " Hz");
//        //}
//        //fft.invalidate();
//    }
//
//}
